#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
long long n,m,sum=0,tx[4]={1,-1,0,0},ty[4]={0,0,1,-1};
char ch,c[25][25];
bool vis[25][25];
void dfs(long long u,long long v)
{
	if(u==n*m+1)
	{
		if(v<=sum)
		{
			bool f=0;
			for(long long i=1;i<=n;i++)
			{
				for(long long j=1;j<=m;j++)
				{
					if(c[i][j]=='#')
					{
						if(vis[i][j])
						{
							continue;
						}
						bool flag=0;
						for(long long v=0;v<=3;v++)
						{
							long long x=i+tx[v],y=j+ty[v];
							if(x<1||x>n||y<1||y>m||c[x][y]!='#')
							{
								continue;
							}
							if(vis[x][y])
							{
								flag=1;
								break;
							}
						}	
						if(!flag)
						{
							f=1;
							break;
						}	
					}		
				}
				if(f)
				{
					break;
				}
			}	
			if(!f)
			{
				for(long long i=1;i<=n;i++)
				{
					for(long long j=1;j<=m;j++)
					{
						if(c[i][j]=='#')
						{	
							cout<<vis[i][j];	
						}		
						else
						{
							cout<<'.';
						}
					}
					cout<<endl;
				}
				exit(0);
			}	
		}
		return ;
	}
	long long x=0,y=0;
	y=u%m+(u%m?0:m);
	x=(u-y)/m+1;
	if(c[x][y]=='#')
	{
		vis[x][y]=1;
		dfs(u+1,v+1);
		vis[x][y]=0;
		dfs(u+1,v);		
	}
	else
	{
		dfs(u+1,v);
	}
}
int main()
{
	freopen("indian.in","r",stdin);
	freopen("indian.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin>>n>>m;
	if(n*m<=20)
	{
		for(long long i=1;i<=n;i++)
		{
			for(long long j=1;j<=m;j++)
			{
				cin>>c[i][j];
			}
		}
		for(long long i=1;i<=n;i++)
		{
			for(long long j=1;j<=m;j++)
			{
				if(c[i][j]=='#')
				{
					sum++;
					for(long long v=0;v<=3;v++)
					{
						long long x=i+tx[v],y=j+ty[v];
						if(x<1||x>n||y<1||y>m||c[x][y]!='#')
						{
							sum++;
						}
					}
				}
			}
		}
		sum/=5;
		dfs(1,0);
	}
	else
	{
		for(long long i=1;i<=n;i++)
		{
			for(long long j=1;j<=m;j++)
			{
				cin>>ch;
				if(ch=='#')
				{
					cout<<'1';
				}
				else
				{
					cout<<'.';
				}
			}
			cout<<endl;
		}		
	}
	return 0;
}
